home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Emulatoren / UAE0.6.4 / src / include / readcpu.h < prev    next >
C/C++ Source or Header  |  2000-05-27  |  2KB  |  92 lines

  1. typedef enum {
  2.   Dreg, Areg, Aind, Aipi, Apdi, Ad16, Ad8r, 
  3.   absw, absl, PC16, PC8r, imm, imm0, imm1, imm2, immi, am_unknown, am_illg
  4. } amodes;
  5.  
  6. typedef enum {
  7.     i_ILLG,
  8.     
  9.     i_OR, i_AND, i_EOR, i_ORSR, i_ANDSR, i_EORSR, 
  10.     i_SUB, i_SUBA, i_SUBX, i_SBCD, 
  11.     i_ADD, i_ADDA, i_ADDX, i_ABCD,
  12.     i_NEG, i_NEGX, i_NBCD, i_CLR, i_NOT, i_TST,
  13.     i_BTST, i_BCHG, i_BCLR, i_BSET,
  14.     i_CMP, i_CMPM, i_CMPA,
  15.     i_MVPRM, i_MVPMR, i_MOVE, i_MOVEA, i_MVSR2, i_MV2SR, 
  16.     i_SWAP, i_EXG, i_EXT, i_MVMEL, i_MVMLE, 
  17.     i_TRAP, i_MVR2USP, i_MVUSP2R, i_RESET, i_NOP, i_STOP, i_RTE, i_RTD, 
  18.     i_LINK, i_UNLK, 
  19.     i_RTS, i_TRAPV, i_RTR, 
  20.     i_JSR, i_JMP, i_BSR, i_Bcc,
  21.     i_LEA, i_PEA, i_DBcc, i_Scc,
  22.     i_DIVU, i_DIVS, i_MULU, i_MULS, 
  23.     i_ASR, i_ASL, i_LSR, i_LSL, i_ROL, i_ROR, i_ROXL, i_ROXR,
  24.     i_ASRW, i_ASLW, i_LSRW, i_LSLW, i_ROLW, i_RORW, i_ROXLW, i_ROXRW,
  25.     i_CHK,i_CHK2,
  26.     i_MOVEC2, i_MOVE2C, i_CAS, i_CAS2, i_DIVL, i_MULL,
  27.     i_BFTST,i_BFEXTU,i_BFCHG,i_BFEXTS,i_BFCLR,i_BFFFO,i_BFSET,i_BFINS,
  28.     i_PACK, i_UNPK, i_TAS, i_BKPT, i_CALLM, i_RTM, i_TRAPcc, i_MOVES,
  29.     i_FPP, i_FDBcc, i_FScc, i_FTRAPcc, i_FBcc, i_FSAVE, i_FRESTORE,
  30.     i_MMUOP
  31. } instrmnem;
  32.  
  33. extern struct mnemolookup {
  34.     instrmnem mnemo;
  35.     const char *name;
  36. } lookuptab[];
  37.  
  38. typedef enum {
  39.     sz_byte, sz_word, sz_long
  40. } wordsizes;
  41.  
  42. typedef enum {
  43.     fa_set, fa_unset, fa_zero, fa_one, fa_dontcare, fa_unknown, fa_isjmp
  44. } flagaffect;
  45.  
  46. typedef enum {
  47.     fu_used, fu_unused, fu_maybecc, fu_unknown, fu_isjmp
  48. } flaguse;
  49.  
  50. typedef enum {
  51.     bit0, bit1, bitc, bitC, bitf, biti, bitI, bitj, bitJ, bitk, bitK,
  52.     bits, bitS, bitd, bitD, bitr, bitR, bitz, lastbit
  53. } bitvals;
  54.  
  55. struct instr_def {
  56.     UWORD bits;
  57.     int n_variable;
  58.     char bitpos[16];
  59.     UWORD mask;
  60.     int plevel;
  61.     struct {
  62.     unsigned int flaguse:3;
  63.     unsigned int flagset:3;
  64.     } flaginfo[5];
  65.     const char *opcstr;    
  66. };
  67.  
  68. extern struct instr_def defs68k[];
  69. extern int n_defs68k;
  70.  
  71. extern struct instr {
  72.     unsigned int mnemo:8;
  73.     unsigned int cc:4;
  74.     unsigned int plev:2;
  75.     unsigned int size:2;
  76.     unsigned int smode:5;
  77.     unsigned int stype:3;
  78.     unsigned int dmode:5;
  79.     unsigned int suse:1;
  80.     unsigned int duse:1;
  81.     int flagdead:8, flaglive:8;
  82.     unsigned char dreg;
  83.     unsigned char sreg;
  84.     signed char dpos;
  85.     signed char spos;
  86.     long int handler;
  87. } *table68k;
  88.  
  89. extern void read_table68k (void);
  90. extern void do_merges (void);
  91. extern int get_no_mismatches (void);
  92.